アーカイブへ戻る

Claude Code ソースコード解説シリーズ ガイド

Claude Code のアーキテクチャ、コンテキスト、ツール、MCP、複数 Agent の協調をたどるシリーズの導入ページです。

『Claude Code ソースコード解析シリーズ』ガイド

この連載が答えようとしているのは「Claude Code はコードを書けるのか」ではなく、よりエンジニアリング的な問いである——

一つのプログラミングエージェントは、いかにしてモデルインターフェースから出発し、プロジェクトを読み取り、ツールを呼び出し、権限を制御し、コンテキストを管理し、協調動作を行うランタイムシステムへと成長するのか?

読みやすさを考慮し、連載全体を問題の連鎖に沿って5つのパートに再構成した。順に読んでも、興味のある箇所に飛んでもよい。

この連載にはもう一つ読解上の約束事がある。各記事ではまず「なぜこの仕組みが必要なのか」を説明し、その上でソースコードに戻り、どの主要ファイルやキーオブジェクトにそれが実装されているかを追う。こうすることで Claude Code をより安定して読めるようになる——ディレクトリツリーから無作為に関数を探すのではなく、まず QueryEngine -> query.ts -> Tool -> Context/Prompt/Permission という実行チェーンを掴み、そのチェーンに沿って各モジュールがなぜ登場するのかを理解していくのだ。

1. まず全体像を掴む

  1. 《Claude Code ソースコードリーディング》第1章|エンジニアリングアーキテクチャ

本稿ではまず高レイヤーの視点から、Claude Code の全体構造を整理する。Model APIQueryEngineToolsContext / State、セキュリティガバナンス、そして Agent 間協調が、それぞれシステム内でどのような役割を担っているのかを把握する。

ソースコードを読む際は、まず次の3つのアンカーを押さえるとよい。QueryEngine.ts は1つのセッションを管理し、query.ts は ReAct ループをラウンドごとに駆動し、Tool.ts はモデルのアクションが実際のエンジニアリング環境に入り込む前に守るべきプロトコル境界を定義している。

2. メインループとコンテキストの理解

  1. 『Claude Code ソースコード解析シリーズ』第2章|ReAct メインループ
  2. 『Claude Code ソースコード解析シリーズ』第3章|プロンプト設計
  3. 『Claude Code ソースコード解析シリーズ』第4章|コンテキスト管理
  4. 『Claude Code ソースコード解析シリーズ』第5章|コンテキストガバナンス(選択)

これらを続けて読むと、Claude Code が各ターンで「何を見て、どう次の一手を決め、履歴をどう保持し、コンテキストが長すぎる場合にどう圧縮するか」をより完全に理解できるでしょう。

このパートのソースコードの主軸は次のとおりです。QueryEngine.submitMessage() が 1 ターンを開始し、queryLoop()State に基づいてそのターンのリクエストを組み立て、モデルが tool_use を返すとツールを実行し、その tool_resultmessages に埋め戻します。プロンプトとコンテキストは切り離して読むべきではありません。どちらも「次のターンでモデルが一体何を見るべきか」という一点に奉仕するものだからです。

3. ツールシステムの理解

  1. 《Claude Code ソースコード解析シリーズ》第6章|ツールの全体像
  2. 《Claude Code ソースコード解析シリーズ》第7章|ファイルツール
  3. 《Claude Code ソースコード解析シリーズ》第8章|ターミナルツール
  4. 《Claude Code ソースコード解析シリーズ》第9章|タスク管理

「Claude Code はなぜ単なるモデル呼び出しではなく、実際に作業を遂行できるのか」に最も関心があるなら、このパートが核心となる。

ツールのパートは、ツール名単位ではなくプロトコルに沿って読むことを推奨する。まず Tool 型の宣言を確認し、次に tools.ts でそのターンで利用可能なツールメニューがどのように生成されるかを読み、最後に toolExecution.ts でスキーマ検証・権限チェック・フック・実行・結果の反映がどのように完結するかを追っていく。

4. 拡張機能を理解する

  1. 『Claude Code ソースコード解説シリーズ』第10章|MCP
  2. 『Claude Code ソースコード解説シリーズ』第11章|Skill

このパートでは、Claude Code がどのように「より多くの外部機能」や「より成熟したタスク経験」をメインランタイムに統合しているのかを解説します。

5. コラボレーションとプランニングの理解

  1. 『Claude Code ソースコード解析シリーズ』第12章|エージェントコラボレーション
  2. 『Claude Code ソースコード解析シリーズ』第13章|業界のエージェントコラボレーション(選択)
  3. 『Claude Code ソースコード解析シリーズ』第14章|プラン
  4. 『Claude Code ソースコード解析シリーズ』第15章|業界のプラン(選択)

このパートは、単一エージェントのメインループを理解した後に、タスク分割、サブエージェント、承認境界、プラン制御面へと視点を上げていくのに適しています。

6. 読み方ガイド

  • 本シリーズを初めて読む場合は、01 -> 02 -> 03 -> 04.1 -> 05 -> 06 -> 07 -> 08.1 -> 09.1 の順がおすすめです。
  • 実装寄りの関心がある方は、02 / 03 / 04.1 / 05 を優先してください。
  • 拡張エコシステムに関心がある方は、06 / 07 / 08.1 を優先してください。
  • 方法論の比較に関心がある方は、04.2 / 08.2 / 09.2 の選択編をあとから補ってください。

7. この連載の統一的な命名規則

今回はファイル名を、より安定した連載番号形式に統一しました。

  • 00 はガイドページ
  • 01-09 はメインの章
  • 05.1 / 05.2 / 05.3 はツールシステム内のサブセクション
  • 04.2 / 08.2 / 09.2 は任意の補足、または横断的な拡張読み物

このようにしておくことで、ディレクトリのソート順、記事のスラッグ、前後の記事やブログの一覧において順序の一貫性が保たれ、ファイル名の辞書順ソートによって順番が前後する心配がなくなります。